package com.easysettle.model

import java.io.Serializable

/**
 * 购物车项数据模型类
 * 表示购物车中的一个商品及其数量
 */
class CartItem(
    // 商品对象
    val product: Product,
    // 商品数量
    var quantity: Int = 1
) : Serializable {
    companion object {
        // 序列化版本ID
        private const val serialVersionUID: Long = 1L
    }

    /**
     * 获取此购物车项的小计（价格 * 数量）
     */
    fun getSubtotal(): Double {
        return product.price * quantity
    }

    /**
     * 获取格式化的小计金额
     */
    fun getFormattedSubtotal(): String {
        return String.format("%.2f", getSubtotal())
    }

    /**
     * 增加商品数量
     */
    fun increaseQuantity() {
        quantity++
    }

    /**
     * 减少商品数量，如果数量为1则不再减少
     */
    fun decreaseQuantity() {
        if (quantity > 1) {
            quantity--
        }
    }

    override fun toString(): String {
        return "CartItem(product=$product, quantity=$quantity)"
    }

    override fun equals(other: Any?): Boolean {
        if (this === other) return true
        if (javaClass != other?.javaClass) return false

        other as CartItem

        return product == other.product
    }

    override fun hashCode(): Int {
        return product.hashCode()
    }
}